package com.shangxian.giveithome.mapper;

import com.shangxian.giveithome.entity.ActiveRelationship;
import com.shangxian.giveithome.entity.Activity;
import com.shangxian.giveithome.entity.ActivityInfo;
import com.shangxian.giveithome.entity.ActivityStatus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface ActivityMapper {

    /**
     * 根据机构id 查询指定页数的 已结束的活动
     *
     * @param id
     * @param pageNum
     * @param pages
     * @return
     */
    List<ActivityStatus> queryActivityEnd(@Param("id") Long id, @Param("pageNum") Integer pageNum, @Param("pages") Integer pages);


    /**
     * 根据机构id 查询指定页数的 进行中的活动
     *
     * @param id
     * @param pageNum
     * @param pages
     * @return
     */
    List<ActivityStatus> queryActivityIng(@Param("id") Long id, @Param("pageNum") Integer pageNum, @Param("pages") Integer pages);


    /**
     * 查询活动总条数
     *
     * @param sta
     * @param id
     * @return
     */
    int queryCount(@Param("sta") Integer sta, @Param("id") Long id);

    /**
     * 根据机构id 查询指定页数的 未开始的活动
     *
     * @param id
     * @param pageNum
     * @param pages
     * @return
     */
    List<ActivityStatus> queryActivityNot(@Param("id") Long id, @Param("pageNum") Integer pageNum, @Param("pages") Integer pages);

    /**
     * 根据id查询活动详情 用户
     *
     * @param id
     * @return
     */
    Activity queryActivityDetails(Long id);

    /**
     * 根据id查询活动详情 机构
     *
     * @param id
     * @return
     */
    Activity queryActivityMechanismDetails(Long id);

    /**
     * 查看活动用户id集合
     *
     * @param id
     * @param pageNum
     * @param pages
     * @return
     */
    List<ActiveRelationship> queryActivityUserByMe(@Param("id") Long id, @Param("pageNum") Integer pageNum, @Param("pages") Integer pages);

    /**
     * 查询通信人员总条数
     *
     * @param id
     * @return
     */
    Integer countActivityUserMe(Long id);

    /**
     * 查询签到人数
     *
     * @param id
     * @return
     */
    Integer countActivityStutus0(Long id);

    /**
     * 查看参加活动次数 已签到
     *
     * @param id
     */
    Integer queryCountActivityNumber(Long id);

    Integer createActivity(ActivityInfo activityInfo);

    Integer deleteActivityExistence(@Param("id") Long id, @Param("along") Long aLong);

    void delete(Long id);

    void deleteActivityData(Long id);

    Integer queryActivityExistence(ActivityInfo activityInfo);

    void update(ActivityInfo activityInfo);

    void save(@Param("activity") Activity activity, @Param("id1") Long id1);

    void update_re(ActivityInfo activityInfo);

    Long queryActivityGoIng(Long ac_id);

    void SignActivity(@Param("ac_id") Long ac_id, @Param("id") Long id, @Param("date") Date date);
}
